<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1. 定义一个函数
        // function  fn() {
        //     return new Promise((resolve,reject)=>{
        //         setTimeout(() => {
        //             // resolve('success');
        //             reject('error')
        //         }, 1000);
        //     })
        // }
        // 1.1 返回promise
        // 1.2 设置单次定时器 
        // 1.3 定时器内调用resolve

        // let p1 = fn();
        // // 2. 调用函数
        // setTimeout(() => {
        //     p1.then((val)=>{
        //         console.log(val);
        //     });
        // }, 2000);
        // // 3. 执行函数返回对象的then方法
        //     // 3.1 定义resolve函数
        // // 3.2 异步调用then方法

        // // 3.3 指定多个resolve回调函数
        // p1.then(undefined,(val)=>{
        //     console.log('外部的then',val);
        // })

        // p1.catch((reason)=>{
        //     console.log("catch当中的",reason);
        // })


        function fn() {
            return new Promise(resolve => {
                setTimeout(() => {
                    resolve(100)
                }, 1000)
            })
        }
        const p1 = fn();
        // console.log(p1);

        // 先定义后执行
        p1.then(value => {
            console.log(value);
        })

        // 先执行后定义
        setTimeout(() => {
            p1.then(value => {
                console.log(value);
            })
        }, 2000)


    </script>
</body>

</html>